Student: Akash Kumar Singh
Mentors: Luis J. Manso, Esteban Martinena, Ramon Cintas
Link to Commits: https://github.com/ksakash/innermodel-python3/commits/master
Link to Codes: https://github.com/ksakash/innermodel-python3
RoboComp is a framework to develop software for a robot in the easiest way possible using .cdsl and components. Like many other robotics frameowrks it also provides a way of ones code in the fastest and most effective way possible, using simulators. RoboComp has its own inhouse simulator which uses InnerModel lib to represent a scene. InnerModel lib is a C++ library which uses openscene graph to render a scene described by a xml file. InnerModel uses various classes like InnerModelCamera, InnerModelLaser, etc. to store all the information, provided by the scene in xml file, in InnerModel class. So anyone who is trying to interact with the simulator have to use this library.
C++ as a programming language comes in handy in case of performance-oriented applications, for example, a simulator. But when it comes to rapid prototyping of applications and ease of use of APIs, it lags behind other languages like python which is one of the most widely used languages just because of this reason and also due to the plethora of libraries that it provides. So, binding the C++ APIs and exposing them to the python interface can be helpful in extending the use of innermodel lib to beginner developers with minimal knowledge of programming. By exposing C++ APIs to python we are achieving two things at the same time: getting the performance from C++ and ease of use through python, which can also increase contributions from the dev community and later help in the development of innermodel lib or robocomp in general.
According to the intial plan we were going to expose the existing C++ APIs to python by using C++ binding libraries such pybind11 or boost-python but upon little consideration and discussion we decided to simply write the whole library from scratch in python which also proved to be easier than the initial plan.
- Ported the C++ class design to Python3
- Designed from scratch InnerModelViewer class in Python
- Enabled headless rendering in InnerModelViewer
- Enabled real time control of a MultiLinkBody
- Implemented sensors like camera, IMU, pointcloud, laser
- Inline documentation in code
- Change the point of view of the debug window for the simulator using mouse action in InnerModelViewer
- More test cases for InnerModel lib
To know more about the implementation detail one can look here.
Demos: https://www.youtube.com/playlist?list=PLRhBKSmnoOjJMXw_s4ken_LUt4V1cc5Ki
Pull request for the merger code: robocomp/robocomp#276
Mentors: Francisco M. Rico, Luis J. Manso
Link to Commits: https://github.com/ksakash/robocompdsl/commits/master
Link to Codes: https://github.com/ksakash/robocompdsl
robocompdsl
is a tool to generate a component from a .cdsl
file. At the time robocompdsl
was quite basic, only able to generate components with ICE middleware and the parser was quite broken. It couldn’t even do the things it was supposed to do like creating components with ROS middleware. This project aimed to endow robocompdsl
with the ability to generate ROS1/ROS2 components based on CDSL descriptions.
- Fixed the implementation of ROS1 component generation through robocompdsl
- Implemented a new design for the component with ROS1/ROS2 as a middleware
- Added support for ROS2 in robocompdsl
- Write unit tests for testing ROS1/ROS2 components
- Runtime testing for ROS1/ROS2 components
- To implement template for converting ROS msgs into ICE data type
To know more about the implementation detail one can look here.
Demos: https://www.youtube.com/playlist?list=PLRhBKSmnoOjJMXw_s4ken_LUt4V1cc5Ki