ENSTABretagneRobotics / razor_imu_9dof

A ROS driver and firmware to connect to Sparkfun OpenLog Artemis, 9DoF Razor IMU M0, 9DOF Razor IMU and 9DOF Sensor Stick. These boards consists of 3 sensors: magnetic, gyro and acceleration sensor.
BSD 3-Clause "New" or "Revised" License
92 stars 114 forks source link

Support of DEV-16832 (OpenLog Artemis) and resolves other previous issues #59

Closed lebarsfa closed 3 years ago

lebarsfa commented 3 years ago

This combines the support of SPX-15846 and DEV-16832 (OpenLog Artemis) with some existing PRs and the resolution of some issues as indicated in the commits. Normally there are no breaking changes, I have tested at some point some combinations of SEN-10736, SEN-14001, DEV-16832, Ubuntu 16.04, Ubuntu 18.04, Ubuntu 20.04, ROS melodic on Windows (without 3D visualization)...

Timple commented 3 years ago

Ubuntu 20.04 probably doesn't work since there is still a python-serial target in the package.xml. For Noetic this should have the python3-serial form.

lebarsfa commented 3 years ago

It confirm that it does work for me if I install manually the dependencies and build the node from source, e.g.

# ROS installation
sudo apt update
sudo apt upgrade
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install python3-rosdep ros-noetic-desktop
sudo rosdep init
rosdep update
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source /opt/ros/noetic/setup.bash
# For serial port access rights
sudo addgroup $USER dialout
# Should reboot...
# ROS workspace creation
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
# Razor-specific
sudo apt-get install build-essential git python3-serial python3-pip python3-wxgtk4.0 ; pip3 install vpython
git clone https://github.com/lebarsfa/razor_imu_9dof.git
cd ..
catkin_make
cd src/razor_imu_9dof/nodes ; wget https://www.glowscript.org/docs/VPythonDocs/VPtoGS.py ; python3 VPtoGS.py ; cp -f Converted/display_3D_visualization.py display_3D_visualization.py ; cd ../../..
cd src
cd razor_imu_9dof/config
cp razor.yaml my_razor.yaml
cd ..
. ~/catkin_ws/devel/setup.bash
roslaunch razor_imu_9dof razor-pub-and-display.launch

However, you are probably right that package.xml should be changed, maybe like in https://github.com/ros-drivers/nmea_navsat_driver/blob/master/package.xml... Maybe we should make a new noetic-devel branch for that since it might break compatibility with older versions...

Timple commented 3 years ago

You can actually. Replace your package.xml by this one:

<?xml version="1.0"?>
<?xml-model
  href="http://download.ros.org/schema/package_format3.xsd"
  schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>razor_imu_9dof</name>
  <version>1.3.0</version>
  <description>
     razor_imu_9dof is a package that provides a ROS driver
     for the Sparkfun Razor IMU 9DOF. It also provides Arduino
     firmware that runs on the Razor board, and which must be
     installed on the Razor board for the system to work. A node
     which displays the attitude (roll, pitch and yaw) of the Razor board 
     (or any IMU) is provided for testing.
  </description>

  <maintainer email="krirobo@gmail.com">Kristof Robot</maintainer>

  <license>BSD</license>

  <author>Tang Tiong Yew</author>
  <author>Kristof Robot</author>
  <author>Paul Bouchier</author>
  <author>Peter Bartz</author>

  <url type="website">http://ros.org/wiki/razor_imu_9dof</url>

  <buildtool_depend>catkin</buildtool_depend>
  <depend>dynamic_reconfigure</depend>
  <exec_depend condition="$ROS_PYTHON_VERSION == 2">python-serial</exec_depend>
  <exec_depend condition="$ROS_PYTHON_VERSION == 3">python3-serial</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>sensor_msgs</exec_depend>
  <exec_depend>tf</exec_depend>
</package>

It creates conditional dependencies and thus no need for a seperate branch.