When running any of the commands in the remaining sections of this document, make sure the shell environment has first been set by running the following command.
As before, replace
PATH_TO_SOURCE with the name of the directory in which the ROS driver is installed.
Before running the ROS driver, make sure the MultiSense S21 is powered. The RJ45 end of the MultiSense S21 developer’s cable should be plugged into the network port of the machine running the driver.
The next step is to configure the network. The multisense_bringup package contains an example configuration script called configureNetwork.sh. Because the NetworkManager daemon may override the settings from configureNetwork.sh, it is advisable to stop this daemon before running configureNetwork.sh. The script then changes the IP address of the host machine to 10.66.171.20 and configures other network parameters to communicate with the as-shipped MultiSense S21.
sudo stop network-manager sudo PATH_TO_SOURCE/multisense/multisense_bringup/configureNetwork.sh
Note that use of our script is not required. You can manually change the computer IP to the MultiSense subnet, or change the MultiSense IP to a unused one on your subnet. But, you must still run the important parts of the the configure network script:
echo 16777215 > /proc/sys/net/core/rmem_max echo 16777215 > /proc/sys/net/core/wmem_max ifconfig eth0 mtu 7200
With the network interface configured, the ROS driver can be launched:
roslaunch multisense_bringup multisense.launch
This will connect to the MultiSense S21 using the default IP address and MTU (10.66.171.21, and 7200, respectively.) If the MultiSense S21 has been configured to use a different IP address, or if a different MTU is desired, the change can be specified with a command line argument:
roslaunch multisense_bringup multisense.launch ip_address:="10.66.171.14" mtu:="9000"
The MultiSense ROS driver supports individual namespacing of driver instances. This feature allows for multiple MultiSense units to be run on the same machine without any conflicts. The namespace of a particular MultiSense ROS driver instance can be changed by specifying the namespace parameter when launching the driver:
roslaunch multisense_bringup multisense.launch namespace:="multisense_1"
This starts the MultiSense driver with a namespace of /multisense_1.
Changing the namespace of a MultiSense ROS driver instance appends all the topic and transform names with the new namespace. The default namespace of a MultiSense driver instance is /multisense. The following documentation assumes the default namespace when describing transforms, topics, and the dynamic reconfigure interface.
The MultiSense ROS driver supports ROS robot models for various MultiSense sensor types. The launch file sensor parameter loads a specific robot model and corresponding URDF.
roslaunch multisense_bringup multisense.launch sensor:="S21"
The above command starts the MultiSense driver using the MultiSense S21 URDF model, loading only the transforms applicable to a particular sensor configuration. Currently the SL, S21, S7, and S7S sensor parameters are supported. If no sensor parameter is specified, then the default parameter is SL is used.
As of ROS Driver version 4.0.0, the driver includes standalone and importable URDF models via xacros. To use the importable URDF models in your larger system, import the xacro and link it to the rest of your model, like so:
<?xml version="1.0"?> <robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="myfirst"> <xacro:include filename="$(find multisense_description)/urdf/multisenseS21/importable.urdf.xacro"/> <link name="base_link"> <visual> <geometry> <cylinder length="0.6" radius="0.2"/> </geometry> </visual> </link> <xacro:importable_multisenseS21 name="multisense" parent="base_link"> <origin xyz="0 0 1" rpy="0 0 0"/> </xacro:importable_multisenseS21> </robot>
The ROS driver uses dynamic_reconfigure to adjust the LED duty cycle, IMU configuration, and camera parameters.
To bring-up the dynamic reconfigure graphical interface, execute:
rosrun rqt_reconfigure rqt_reconfigure
select the "/multisense" namespace from the drop-down list:
Dynamic reconfigure allows the camera resolution to be changed from 0.5 megapixels (1024x544) up to 2 megapixels (2048x1088). 3.0_beta firmware adds support for non-square vertical resolutions (1024x272 and 2048x544) and varying disparity levels (64, 128, and 256.) Please also note that in the 3.0_beta and newer firmware release, disparity data is available at all resolutions.
When switching resolutions there is a delay in the image streams while the sensor re-computes internal parameters. This delay can be on the order of 30 seconds.
Note that the LEDs will not illuminate unless there is a subscription to an image or depth topic. See section 4.5 for more detailed information on these parameters.
The ROS full install includes a 3D visualization tool called RViz. To start RViz, execute:
rosrun rviz rviz
Once RViz opens, navigate to File → Open Config, and select the file called rviz_config.vcg located in the multisense_bringup package, located in the following directory:
This will load the correct configuration to visualize all sensors on the Multisense S21.
Note that in the default Ubuntu 12.04 desktop, the File menu is not displayed on the RViz window, but rather on the panel at the top of the screen, and is only visible when the mouse hovers over the panel. To access the File menu, move the mouse to the top of the screen, and the menu should appear in the upper- left corner.
The driver contains several command line utilities for querying and setting information stored in non-volatile flash on your MultiSense S21.
The utilities are packaged as part of the low-level C\++ API in the multisense_lib package, and can be run using the rosrun command. For example, to see the built-in help of the IP address changing utility:
rosrun multisense_lib ChangeIpUtility --help