3. Running
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.
source PATH_TO_SOURCE/devel/setup.bash
As before, replace PATH_TO_SOURCE
with the name of the directory in which the ROS driver is installed.
3.1. Starting the Driver
Before running the ROS driver, make sure the MultiSense S27 is powered. The RJ45 end of the MultiSense S27 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 S27.
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 S27 using the default IP address and MTU (10.66.171.21, and 7200, respectively.) If the MultiSense S27 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"
3.2. Namespacing
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.
3.3. Robot Model
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:="{VARIANT}"
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, S7S, and S27 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/multisenseSL/importable.urdf.xacro"/>
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
</visual>
</link>
<xacro:importable_multisenseSL name="multisense" parent="base_link">
<origin xyz="0 0 1" rpy="0 0 0"/>
</xacro:importable_multisenseSL>
</robot>
3.4. Configuration
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.
3.5. Visualization
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:
PATH_TO_SOURCE/src/multisense/multisense_bringup
This will load the correct configuration to visualize all sensors on the Multisense S27.
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.
3.6. Command Line Utilities
The driver contains several command line utilities for querying and setting information stored in non-volatile flash on your MultiSense S27.
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