-
Notifications
You must be signed in to change notification settings - Fork 3
Port Existing MRPT algorithms for V-REP simulator (shubham-kumar1410) #3
Comments
Hey @shubham-kumar1410, @ktushar14, Welcome to MRPT and to GSoC! Along with @maxchaos, @EduFdez, @taihup we will be mentoring your projects and try to provide guidance and advice whenever possible. In sake of starting this discussion and since this is the bonding period, could you please give a small introduction about you so that the MRPT mentors and also @rachit173, @karnikram get to know you better? Regards, P.S. I'm writing to this issue so that I don't repeat myself but feel free to comment in your corresponding tickets. |
Hi. I am Shubham Kumar and I am currently a 3rd year student of BITS Pilani KK Birla Goa Campus,India majoring in Electrical and Electronics Engineering. Regards, |
Hi to all students and congratulations for your acceptance! |
Hey @shubham-kumar1410,
Great, don't hesitate to ask any questions you may have with the MRPT APIs, CMake configuration or anything else you may think of.
Hmmm, which plugin are you referring to?
Yeah, knowing how to handle this is going to be important in the project. All in all try to familiarise with the way MRPT is organised and works, e.g., cmake structure, coding standards, Take your time with that and probably next week we can setup a call along to discuss and set specific goals and milestones for the project. How does that sound? Regards, |
Hi @bergercookie @maxchaos thanks for your response and I am really looking forward to working with you guys. Regards, |
Hey everyone, please take a look at my post in my corresponding issue. |
Sure, let's pick it up then. |
Hi @bergercookie ! |
Hi, |
Hey @shubham-kumar1410,
Yes, so just to get everyone in the conversation up-to-date: I created a template repository mrpt_vrep_bridge which should act as the basis of this GSoC project. It contains boilerplate code (mostly cmake configuration) for using Doxygen for documentation and GTest for unittesting, as well as a basic file structure of how I'd like the final work to be. For now start by adding cmake support for the MRPT library as well as VREP. The latter may need some thought. If I were you I would use an environment variable to specify where V-REP is located in the filesystem (e.g., VREP_PATH). Then I would use that to let cmake know where to find the header files ( Try building a plugin of yours using this setup and a sample remoteApi application. After compiling the vrep-dependent targets you'll have to cmake-install the latter (at least the generated
How about Tuesday 3:00 BST? |
@bergercookie Put it here: https://github.com/MRPT/mrpt_vrep_bridge |
UPDATE: Migrated mrpt_vrep_bridge - https://github.com/MRPT/mrpt_vrep_bridge |
I'll start by adding cmake support. |
As decided in my call with @bergercookie and @maxchaos I will read up about cmake and try building the remote test api without qmake. Once that is done, I will try to retrieve data from a V-REP scene and convert it to mrpt class objects so that it can easily be processed by the library. This part will be common for porting all libraries and hence it is given a lot of preference |
Hey guys, I added the general milestones we want to reach as well as the intermidiate / smaller goals that comprise them. @shubham-kumar1410, @maxchaos take a look at the timeline and tell me whether it makes sense for you guys. The point is to have a basic functional prototype at the end of phase 1 of mrpt-graphslam running in V-REP and build on top of it / polish / extend it in the second. P.S. @jlblancoc Zenhub throws me errors when I want to assign issues to somebody or when I want to add them to a milestone etc. Is there any extra configuration step that I should take before using it or is it a bug on their side? |
I found a way to build to build the remote api using cmake by adding |
Hey Shubham,
Eeem, no that's not the way to do it... and for a number of reasons. :-)
Let me break it down.. What's your goal? To build the remoteApi client application of yours. To do that you need to let it know of the locations of some very specific First of all run qmake in your client application directory to generate a template Makefile and then run make on that (from the command line). When you run make you can see exactly what directories are used to search for header files. These directories should be added in the Either include them directly in your Let me know if all this is clear... |
Thanks. I'll try to use this method to build the api. |
Update : |
Update: |
Hey @shubham-kumar1410, I've taken a look at your new commits. To make the reviewing in a more organised manner make a PR from your vrep_convert branch to the newly pushed upstream mrpt_vrep_bridge branch |
UPDATE:
|
I have looked at your PR review and I am working on them now. I will send the commit once I have addressed all the review points. |
Update : |
Update : |
Hi. The _execGraphSlamStep method uses 4 arguments : CActionCollection::Ptr action,CSensoryFrame::Ptr observations,CObservation::Ptr observation and a size_t variable. I am not sure how they work. I understood that CSensoryFrame object contains the CObservation2DRangeScan values and the CActionCollection object the odometry values. Can you help me with the roles of the other two variables ? I tried going through the code but I am not clear on this. |
Hey @shubham-kumar1410, I added some additional comments on the pending PR of yours.
Check this document: https://www.mrpt.org/Rawlog_Format In each iteration either the CObservation part is filled or both CACtionCollection and CSensoryFrame. That solely depends on what kind of format you want to use and support. A list of CObservation is much more flexible but in the context of filtering which we don't do in graphslam using action + corresponding observations may be more appropriate. The last argument is the rawlog entry. It's not that important. Check the code, it's just beign used to update the ground-truth visualisation. |
@shubham-kumar1410, 1st evaluation starts on the 11th of June. Please submit a PR with a functional example of using graphslam with Input from V-REP whenever you are ready so that we can review it.. |
I have sent the commit with all the changes requested,kindly review it. |
I have pushed the graphslam api on this branch. Kindly have a look. I will be pushing some more changes to it soon. |
Firstly, I believe it is a very bad idea to throw |
Hi. I am sorry for pushing the edited header files to github. I wanted to make sure my api was functioning properly ahead of the deadline hence I panicked and edited the header to check the functionality. I was planning on removing all the headers before I submit the PR. Also , the reason I put the graphslam headers in the include directory is that I don't have them installed along with other MRPT libraries in my system. I had installed the libs using this command The API is still a work in progress. It does not take the config file name and the registration deciders,optimiser from the user. I am implementing these things right now along with a couple of changes and I will push these changes soon. |
Don't worry about it. No harm done. |
It is not located there with the rest of the mrpt libs.There are some other libs like gui that are missing. I tried searching on my os but it is not there. I even tried reinstalling the whole package. Hence I added them to the project folder.I am using Ubuntu 16.04 right now. |
Since we're developing on top of MRPT it makes sense to compile the latter from source instead of installing it as a debian package. See the github page for instructions on that. You can't find Just for reference though, if you were to use ppas, use these instead: sudo add-apt-repository ppa:joseluisblancoc/
sudo apt-get update
sudo apt-get install libmrpt-dev mrpt-apps |
I 'll test the new functionality today and tomorrow, @shubham-kumar1410 please edit the README file for instructions on your current setup (how to run, what to expect, what's currently working and what doesn't) |
I will edit the README file with the instructions and also I will look into compiling MRPT directly from the source |
I have edited the README file. I am still not clear how will we link the header files from the source to our project. Should I just include the header files located in my MRPT folder cloned from the source or is there any other way ? |
target_link_libraries(project PUBLIC ${MRPT_LIBS}) |
I have added all this to the main cmakelists file yet I am unable to find the graphslam headers . I'll try going through the tutorial once. Thanks :) |
I had a brief look at your code and application... here's some thoughts:
simxGetObjectHandle(clientID,"fastHokuyo",&handle,simx_opmode_streaming);
simxGetObjectPosition(clientID,handle,-1,position,simx_opmode_streaming); // get object orientation(returns euler angles)
simxGetObjectQuaternion(clientID,handle,-1,quaternion,simx_opmode_streaming);
...
CPose3D sensor_pose;
bool pose_convert = convert(position,quaternion,sensor_pose);
CObservationOdometry odom;
bool odometry_convert = convert(sensor_pose, vel, angularvel,odom);
CPose2D sensor_pose_2d = odom.odometry; This is wrong. graph-slam operates with odometry measurements (e.g., from the mobile robot wheels) + laser scan measurements Using the V-REP provided correct position and orientation of the laser scanner object as odometry measurements wont do. There should be an actual robot there with wheels where we'd be able to use an odometry or velocity model. Then on that measurement we should apply a gaussian / banana / triangular noise distribution and use that as input to graphslam.
All in all, I consider this a very good effort on your part but still it's not enough to go on to the 2nd phase of GSoC and come up with the expected results by the end of that. Let me know if you have any questions regarding all this either in this issue or in the chat... |
Hi @bergercookie , thanks for your feedback. I understand that a static laser won't cut . Earlier I had started working on creating a scene with a Rover with a scanner mounted on top of it. I thought it would be better if I start working on the scene once I have ported one library and that's what I am doing right now. |
Hi, there are a couple of things which I didn't understand. The current odometry measurements considers the robot position and quaternion to create the COdometryObservation class object. Is there something that I am missing ? Also I didn't quite understand the contents of the ground truth file. I mean that what are the contents of it I would like to work on this project irrespective of the evaluation result and would be grateful if this issue is open for my queries. |
Initial Description
V-REP provides a good platform for combining external libraries that are often used in robotic simulations. The aim of the project is to use this flexibility of the simulator and port existing MRPT algorithms for V-REP simulator so that they can be used in the V-REP simulator. The libraries will be extended to V-REP with the help of V-REP Remote Api which is part of the V-REP API framework
Original GSoC Proposal
Progress: All comments below reflect the interactions between the GSoC student and the mentors.
The text was updated successfully, but these errors were encountered: