Please note: this article was written for SmartSoft v1-generation for use with CORBA/SmartSoft in around 2013. The general principle described here still applies. This page is no longer maintained, but kept for documentation purposes. You can find the source code of SmartMorseBaseServer here.
We are happy to announce the release of an interface component between SmartSoft and Morse. This is a first step to use the Morse simulator with the robotics software framework SmartSoft. SmartSoft is a component-based approach for robotics software based on communication patterns as core of a robotics component model.
This component, called SmartMorseBaseServer, is part of the SmartSoft Framework. It reads data from the Morse Simulator via the Morse-Sockets-Middleware and provides it as services to the SmartSoft framework for use by other components.
Currently the SmartMorseBaseServer is capable to read data from the pose and the laser sensor of the morse simulator and is able to send information to all actuators which accept v_omega or steer_force commands. The SmartMorseBaseServer converts the data from Morse simulator into SmartSoft communication Objects to exchange the data with other components inside the SmartSoft Framework. Other sensors or actuators can easily be added.
With Morse accessible from the SmartSoft framework, it is now possible to reuse existing SmartSoft components for use with Morse and to make use of the SmartSoft principles, component model and the SmartMDSD toolchain for development with Morse.
To provide an example a simple traktor model and an Ackermann actuator have been created. Both are modifications of the Hummer model and the teer/Force actuator. Like the Steer/Force actuator, the ackermann actuator waits for steer_force commands which then are transformed into ackermann angles to drive the traktor. It also provides the option to limit the maximum speed of the robot on a sensful value inside the builder script. To check the correctness of the steering angles axes inside the blender model of the traktor can be set to visible. A video which shows deployment and interaction between the Morse Simulator and SmartSoft can be found here. It first shows the use of the Morse Simulator with a joystick navigation and in the second part the usage with an automatic collision avoidance.
SmartMorseBaseServer is released under LGPL and can be downloaded from sourceforge.
What is needed to run the tractor example of the SmartSoft-Morse Simulator interaction:
When the installation was successful the following steps are necessary to run the JoystickNavigation example:
Navigate to $SMART_ROOT/src/components/SmartJoystickServer/src, copy the SmartJoystickServer.ini.template file to $SMART_ROOT/etc and remove the .template from the filename. Repeat this step for the SmartJoystickNavigation and the SmartMorseBaseServer. The SmartSoft components expect those initialization files to be in the /etc folder. In those files one can tell the component to which other components it has to connect to provide a service, for example. Now to tell the SmartJoystickNavigation which component needs information about steering commands, the respective initialization file has to be adjusted. So open the SmartJoystickNavigation.ini file and replace the servername of the [navigation_client] by SmartMorseBaseServer and set max_velocity to 10.0. Now save the file and close it. Open a terminal and type cd $SMART_ROOT. Here you first have to start the naming service with ./startCorba. After that you can open three new xterm terminals from this terminal by typing xterm&. Now back in the terminal navigate to the morse builder script with cd src/components/SmartMorseBaseServer/morseSrc. To run the Morse simulation type morse run traktor.py and the simulation should start. Now run the SmartJoystickServer in one of the xterm terminals by typing bin/smartJoystickServer. Then run the SmartJoystickNavigation in one of the other xterms with bin/smartJoystickNavigation. After that run the SmartMorseBaseServer in the last xterm window with bin/smartMorseBaseServer. Now all components should run and the tractor should react on commands entered via the left analog stick of the gamepad. To get a better view type F9 to switch into third person perspective. If the SmartMorseBaseServer is not able to start it is probable, that the port numbers of the Morse simulator components and the port numbers in the SmartMorseBaseServer initalization file do not match. In this case change the port numbers in the initialization file to the correct values. Those values can for example be found in the terminal output of the Morse Simulator.
See YouTube: https://youtu.be/2pPh9Finwr8