Errors when running different modules in the pipeline
i get this error when running the Openpose and Openpose visualizer modules. Are there any other modules that i should add to be able to read this from webcam
System.StackOverflowException
HResult=0x800703E9
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
Also, is there a way that i would be able to use the data to publish the messages in ROS ?
thank you.
Hello @youssef266 .
I haven't seen this before. I am sorry that from this error message, I cannot tell where the problem is.
I think there are 2 possible places that may lead to this problem. The first is that the runtime environment is not compatible, the second one is that the way that components are connected is not the optimal form (The stable version in the master branch does not detect connection errors).
Maybe you can first create a configuration containing only MediaCapture and ColorVideoVisualizer to test whether the webcam is working well.
The full pipeline should contain MediaCapture , OpenPose and OpenPoseVisualizer. Where OpenPoseVisualizer accepts outputs from both MediaCapture and OpenPose.
For the question about pushing the output to other places, OpenSense only supports /psi built-in remoting protocol. You can receive data from another host only if you can run .net core in your ROS,
Actually, I cannot recall the detailed implementation of the version in the master branch. Our latest version (now in the dev branch) has changed a lot and it provides the ability to easily add new customized components, maybe you want to use that to implement a private protocol to send data.
By the way, here are the detail steps to run OpenPose in OpenSense using the version in the dev branch.
- Switch to the
devbranch. - Open the visual studio solution file
OpenSense.sln - Double click project
WpfApplicationto open and edit its project file. - add
<ProjectReference Include="..\Psi.Media.Windows.Wpf\Psi.Media.Windows.Wpf.csproj" />,<ProjectReference Include="..\OpenPose.Wpf\OpenPose.Wpf.csproj" />and<ProjectReference Include="..\OpenPose.Visualizer.Wpf\OpenPose.Visualizer.Wpf.csproj" />between line 53 to 62. By adding these dependencies of required components, you do not need to copy compiled DLLs manually. - Modify the target build architecture from
Any CPUtox64on the top of visual studio, because OpenPose only supports .net framework not .net standard like other components. - Build the
WpfApplicationproject. - Copy
OpenSense\OpenPosePInvoke\OpenPoseLib\modelsdirectory to the output directory ofWpfApplication. These are the model files of OpenPose which can not be copied automatically. - Copy all the files under
OpenSense\OpenPosePInvoke\OpenPoseLib\bin\x64\CommonandOpenSense\OpenPosePInvoke\OpenPoseLib\bin\x64\Debug(if you are using theDebugconfiguration). These are native OpenPose libraries which also can not be copied automatically. - Run the
WpfApplicationand open the configuration file here: openpose sample config dev branch.pipe.zip - Change the default webcam of this configuration, and you may want to reduce to resolution to increase the frame rate.
- Run this pipeline to see the result.
Please feel free to ask if you meet any further problems.
Some clarifications:
- Since by now our OpenSense only supports /psi built-in protocol. If you want to run OpenSense in your ROS to receive data, the ROS should be able to install a
.net coreruntime. - If you choose to implement a private protocol to send data, you do not need OpenSense in your ROS. I will provide information if you want to write a customized component. Or you can just add your code after line 97 of
OpenPose.cs. - The latest version output directory layout will should look like this
Debug/
models/
......
cublas64_100.dll
......
openposed.dll
......
OpenSense.Wpf.exe
......