Giter Club home page Giter Club logo

enstabretagnerobotics / razor_imu_9dof Goto Github PK

View Code? Open in Web Editor NEW

This project forked from robotictang/razor_imu_9dof

92.0 8.0 115.0 240 KB

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.

License: BSD 3-Clause "New" or "Revised" License

MATLAB 6.51% Processing 11.38% Python 17.89% CMake 0.67% C++ 63.55%

razor_imu_9dof's People

Contributors

dkoguciuk avatar kristofrobot avatar lebarsfa avatar maik93 avatar paulbouchier avatar robotictang avatar timple avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

razor_imu_9dof's Issues

Wrong coordinate system for SEN 14001?

I am using Razor 9DOF IMU (hardware version SEN14001). The code in imu_node.py converts the readings from Razor AHRS firmware to ROS standards (REP 103). However when I test the orientations by measuring the acceleration due to gravity (9.8 m/s^2) on each axis by echoing messsages from the topic imu (I am running roslaunch razor_imu_9dof razor-pub.launch), I get very different orientations. See these Pictures:

This means the axis are oriented this way:

This is the left handed coordinate system, whereas ROS uses right handed coordinate system.

Am I missing something? I ask because according to PR #34 this repo supposed to work with SEN14001?

Error in running for "roslaunch razor_imu_9dof razor-pub-and-display.launch"

There are two issues i am facing right now. After I entering roslaunch razor_imu_9dof razor-pub-and-display.launch, the error message came out as below~

SUMMARY

PARAMETERS

  • /imu_node/accel_x_max: 250.0
  • /imu_node/accel_x_min: -250.0
  • /imu_node/accel_y_max: 250.0
  • /imu_node/accel_y_min: -250.0
  • /imu_node/accel_z_max: 250.0
  • /imu_node/accel_z_min: -250.0
  • /imu_node/calibration_magn_use_extended: False
  • /imu_node/gyro_average_offset_x: 0.0
  • /imu_node/gyro_average_offset_y: 0.0
  • /imu_node/gyro_average_offset_z: 0.0
  • /imu_node/imu_yaw_calibration: 0.0
  • /imu_node/magn_ellipsoid_center: [0, 0, 0]
  • /imu_node/magn_ellipsoid_transform: [[0, 0, 0], [0, 0...
  • /imu_node/magn_x_max: 600.0
  • /imu_node/magn_x_min: -600.0
  • /imu_node/magn_y_max: 600.0
  • /imu_node/magn_y_min: -600.0
  • /imu_node/magn_z_max: 600.0
  • /imu_node/magn_z_min: -600.0
  • /imu_node/port: /dev/ttyusb
  • /rosdistro: kinetic
  • /rosversion: 1.12.14

NODES
/
display_3D_visualization_node (razor_imu_9dof/display_3D_visualization.py)
imu_node (razor_imu_9dof/imu_node.py)

auto-starting new master
process[master]: started with pid [4547]
ROS_MASTER_URI=http://192.168.0.26:11311

setting /run_id to 1372f8ca-1ddb-11e9-b326-98541b9f9cdc
process[rosout-1]: started with pid [4560]
started core service [/rosout]
process[imu_node-2]: started with pid [4563]
process[display_3D_visualization_node-3]: started with pid [4564]
Traceback (most recent call last):
File "/opt/ros/kinetic/share/razor_imu_9dof/nodes/display_3D_visualization.py", line 31, in
from visual import *
ImportError: No module named visual

[display_3D_visualization_node-3] process has died [pid 4564, exit code 1, cmd /opt/ros/kinetic/share/razor_imu_9dof/nodes/display_3D_visualization.py __name:=display_3D_visualization_node __log:=/home/test/.ros/log/1372f8ca-1ddb-11e9-b326-98541b9f9cdc/display_3D_visualization_node-3.log].
log file: /home/test/.ros/log/1372f8ca-1ddb-11e9-b326-98541b9f9cdc/display_3D_visualization_node-3*.log
[INFO] [1548116239.024456]: Reconfigure request for yaw_calibration: 0
[INFO] [1548116239.024619]: Set imu_yaw_calibration to 0
[INFO] [1548116239.036369]: Opening /dev/ttyusb...
[ERROR] [1548116239.036544]: IMU not found at port /dev/ttyusb. Did you specify the correct port in the launch file?
[imu_node-2] process has finished cleanly
log file: /home/test/.ros/log/1372f8ca-1ddb-11e9-b326-98541b9f9cdc/imu_node-2*.log
^C[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

The visual import not found, and the sensor port wasn't detected from the error message I had.
I did check the port of the FSM-9 IMU I attached with, the error still coming out.

Yaw values too off even after calibration

I am trying to get data from my razor imu m0- 14001 for the past week. I performed multiple calibrations as mentioned in the official hookup guide. When I launch the ros-pub.launch file, i get a ros topic imu/data. I used this data to convert the quaternians into roll, pitch yaw using tf::Matrix3x3 m(q) and then extracting RPY values from m using m.getRPY()
Unfortunately I am not getting zero yaw along any direction. also the values seem to drift little over time. Can someone please address this issue?

Device names differ in launch/razor-pub.launch and -pub-and-display.launch

Sorry - I may have accidentally snuck one of my changes in on you. pub.launch uses /dev/ttyUSB0 and pub-and-display uses /dev/ttyACM0. They should be the same, whatever they are. The razor shows up as /dev/ttyUSB0 on my robot, but the code originally had /dev/ACM0 in there, but I don't know why. I'd think your system probably shows it as /dev/ttyUSB0 too - a Mac is the only think I can think of which would show it as ACM0. I'm guessing USB0 is correct for Ubuntu - thoughts?

[QUESTION] Sketch Razor_AHRS.ino too big

I have the SparkFun IMU M0, and when trying to upload the sketch, I get the following error:

Sketch uses 30,492 bytes (106%) of program storage space. Maximum is 28,672 bytes.
Global variables use 2,676 bytes (104%) of dynamic memory, leaving -116 bytes for local variables. Maximum is 2,560 bytes

I've tried to use int-s instead of float-s wherever I can, but I'm still above the limit.

Do you have any suggestions how I can overcome the memory limitations?

Something wrong with the python visual module

Hi

I try running

roslaunch razor_imu_9dof razor-display.launch

And the publishing works just fine, I can see the published topic /imu.

The problem is in the visualization. I get the following error:

SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.13

NODES
  /
    display_3D_visualization_node (razor_imu_9dof/display_3D_visualization.py)

auto-starting new master
process[master]: started with pid [5024]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to f3115532-6588-11e8-ae14-a44cc847fdbe
process[rosout-1]: started with pid [5037]
started core service [/rosout]
process[display_3D_visualization_node-2]: started with pid [5044]
Traceback (most recent call last):
  File "/home/amitsinha/catkin_ws/src/razor_imu_9dof/nodes/display_3D_visualization.py", line 31, in <module>
    from visual import *
  File "/usr/lib/python2.7/dist-packages/visual/__init__.py", line 66, in <module>
    from visual.ui import display
  File "/usr/lib/python2.7/dist-packages/visual/ui.py", line 3, in <module>
    import materials
  File "/usr/lib/python2.7/dist-packages/visual/materials.py", line 152, in <module>
    tx_turb3 = raw_texture( data=reshape(data,(64,64,64,3)), interpolate=True, mipmap=False )
  File "/usr/lib/python2.7/dist-packages/visual/materials.py", line 70, in __init__
    self.__setattr__(key, value)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
[display_3D_visualization_node-2] process has died [pid 5044, exit code 1, cmd /home/amitsinha/catkin_ws/src/razor_imu_9dof/nodes/display_3D_visualization.py __name:=display_3D_visualization_node __log:=/home/amitsinha/.ros/log/f3115532-6588-11e8-ae14-a44cc847fdbe/display_3D_visualization_node-2.log].
log file: /home/amitsinha/.ros/log/f3115532-6588-11e8-ae14-a44cc847fdbe/display_3D_visualization_node-2*.log

The visualization portion doesn't work. On looking into it further, I get the error in the python shell when I try to import the visual module:

$python
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import visual
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/visual/__init__.py", line 66, in <module>
    from visual.ui import display
  File "/usr/lib/python2.7/dist-packages/visual/ui.py", line 3, in <module>
    import materials
  File "/usr/lib/python2.7/dist-packages/visual/materials.py", line 152, in <module>
    tx_turb3 = raw_texture( data=reshape(data,(64,64,64,3)), interpolate=True, mipmap=False )
  File "/usr/lib/python2.7/dist-packages/visual/materials.py", line 70, in __init__
    self.__setattr__(key, value)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> 

Any alternate suggestions on visualization? Something like rviz or anything.

Thanks

ImportError: No module named razor_imu_9dof.cfg

Hi,

I'm having the following error while running the imu_node.py:

from razor_imu_9dof.cfg import imuConfig
ImportError: No module named razor_imu_9dof.cfg

I looked in the repos and indeed there is no file named razor_imu_9dof.cfg. Only imu.cfg

My workaround was to comment out the lines of the node code where a variable of that file is used. Of course, the Dynamic Reconfigure is not available because of that.

Any help would be appreciated.

P.S. I'm using Ubuntu 16.04 with Kinetic.

Best,

python-visual not available on Ubuntu 18.04

Hi,

My OS is Ubuntu 18.04 (Bionic Beaver) and I am using ROS Melodic. Currently the python-visual package is not available for this OS. Hence I am not able to use the 3D Visualization GUI tool. Is there an alternative to python-visual or a workaround for this problem?

roslaunch razor_imu_9dof razor-pub.launch error

hi,
My system is 64 bits.i used the KristofRobot/razor_imu_9dof firmware.
when i run the launch,I got the following error.
[INFO] [WallTime: 1478277847.034457] Publishing IMU data...
Traceback (most recent call last):
File "/home/catkin_imu/src/razor_imu_9dof/nodes/imu_node.py", line 228, in
yaw_deg = -float(words[0])
ValueError: could not convert string to float:
[imu_node-2] process has died [pid 8670, exit code 1, cmd /home/catkin_imu/src/razor_imu_9dof/nodes/imu_node.py __name:=imu_node __log:=/home/.ros/log/de7abd92-a2ad-11e6-ac74-000c2971e5f1/imu_node-2.log].
log file: /home/.ros/log/de7abd92-a2ad-11e6-ac74-000c2971e5f1/imu_node-2*.log`

Using IMU at computer powerup

Hi,

I'm using the SEN 14001 imu on Ubuntu 16.04. If I plug it into a powered-on computer, it works fine. But, if I plug it into the computer while the computer is off, then turn on the computer, the device doesn't function properly. For example, it will stream out the default YPR angles to the Arduino serial monitor. However, if I try to send a command to it (llike #o0 or #p or the other commands), it completely ignores them. To get around this, I've been unplugging and replugging the imu to the already-powered-on computer. But, I feel that this should be better handled.

jade and kinetic packages

I have confirmed that this package will build on jade. Any plans on cutting a release for jade (and maybe even kinetic)?

Display does not work

I am trying to run the pub-and-display.launch file, but got the following error:

[display_3D_visualization_node-3] process has died [pid 12486, exit code 1, cmd /home/nvidia/racecar-ws/src/razor_imu_9dof/nodes/display_3D_visualization.py __name:=display_3D_visualization_node __log:=/home/nvidia/.ros/log/d68f1106-683b-11ec-a40e-48b02d2f700a/display_3D_visualization_node-3.log].
log file: /home/nvidia/.ros/log/d68f1106-683b-11ec-a40e-48b02d2f700a/display_3D_visualization_node-3*.log

How can I fix this?

Support for factory-programmed firmware

A driver for the Sparkfun Razor IMU M0 with the factory-programmed firmware can be found at https://github.com/mitll-ros-pkg/razor_imu_m0_driver .

This driver differs from the razor_imu_9dof package in that it only outputs the sensor measurements, follows REP-145, and interfaces with the factory-programmed firmware.

Is there interest in a pull request to merge these packages? I.e. the razor_imu_9dof package provides two nodes: the node as it currently exists and a second "factory firmware" node.

Given that the packages provide different functionality, i.e. an AHRS vs simple driver, it may make sense to keep the packages separate. On the other hand, merging the packages could reduce user confusion.

Firmware Issue

I know this may seem trivial but any help would be appreciated.

When I'm trying to compile the firmware to the board it's not accessing the util/inv_mpu.h header file. As a result it's not finding the setter and getter functions. Here's an error code I'm getting.

libraries/MPU_9250_Digital_Motion_Processing/SparkFunMPU9250-DMP.cpp.o:
In function `MPU9250_DMP::enableInterrupt(unsigned char)':
/Users/Heyseb1/Documents/Arduino/libraries/MPU_9250_Digital_Motion_Processing
/SparkFunMPU9250-DMP.cpp:63: undefined reference to `set_int_enable'

All the functions the compiler is looking for are within util/inv_mpu.h I'm just not sure why it's not finding the folder and file. They are all within the same directory as well. Any suggestions?

Thanks in advance.

[Question] Just use visualization

Hey,

I just want to use the nice visualization nodes you have here. I already have a published topic /imu in my ros what should I do to just use your visualization?

I thought I have to simply launch:
roslaunch razor_imu_9dof razor-display.launch

But I got this error:


process[display_3D_visualization_node-2]: started with pid [30306]
Traceback (most recent call last):
  File "/opt/ros/kinetic/share/razor_imu_9dof/nodes/display_3D_visualization.py", line 31, in <module>
    from visual import *
  File "/usr/lib/python2.7/dist-packages/visual/__init__.py", line 66, in <module>
    from visual.ui import display
  File "/usr/lib/python2.7/dist-packages/visual/ui.py", line 3, in <module>
    import materials
  File "/usr/lib/python2.7/dist-packages/visual/materials.py", line 152, in <module>
    tx_turb3 = raw_texture( data=reshape(data,(64,64,64,3)), interpolate=True, mipmap=False )
  File "/usr/lib/python2.7/dist-packages/visual/materials.py", line 70, in __init__
    self.__setattr__(key, value)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
[display_3D_visualization_node-2] process has died [pid 30306, exit code 1, cmd /opt/ros/kinetic/share/razor_imu_9dof/nodes/display_3D_visualization.py __name:=display_3D_visualization_node __log:=/home/markus/.ros/log/0503e28e-6c0c-11e9-8e23-48d2244c225b/display_3D_visualization_node-2.log].
log file: /home/markus/.ros/log/0503e28e-6c0c-11e9-8e23-48d2244c225b/display_3D_visualization_node-2*.log





Increasing IMU hz to 1000

Hi,

By decreasing the delay from 20ms to 1, I am able to receive the IMU data at about 123hz, Is it possible to increase the IMU output rate to 1khz?

Regards,

Cant upload Razor_AHRS

I get this error

updated error

Arduino: 1.8.15 (Linux), Board: "Arduino Uno"

/home/ubuntu/catkin_ws/src/razor_imu_9dof/src/Razor_AHRS/Sensors.ino: In function 'bool enableCIPOpullUp()':
Sensors:78:2: error: 'ap3_err_t' was not declared in this scope
ap3_err_t retval = AP3_OK;
^~~~~~~~~
Sensors:79:2: error: 'am_hal_gpio_pincfg_t' was not declared in this scope
am_hal_gpio_pincfg_t cipoPinCfg = AP3_GPIO_DEFAULT_PINCFG;
^~~~~~~~~~~~~~~~~~~~
Sensors:80:2: error: 'cipoPinCfg' was not declared in this scope
cipoPinCfg.uFuncSel = AM_HAL_PIN_6_M0MISO;
^~~~~~~~~~
Sensors:80:24: error: 'AM_HAL_PIN_6_M0MISO' was not declared in this scope
cipoPinCfg.uFuncSel = AM_HAL_PIN_6_M0MISO;
^~~~~~~~~~~~~~~~~~~
Sensors:81:30: error: 'AM_HAL_GPIO_PIN_DRIVESTRENGTH_12MA' was not declared in this scope
cipoPinCfg.eDriveStrength = AM_HAL_GPIO_PIN_DRIVESTRENGTH_12MA;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sensors:82:25: error: 'AM_HAL_GPIO_PIN_OUTCFG_PUSHPULL' was not declared in this scope
cipoPinCfg.eGPOutcfg = AM_HAL_GPIO_PIN_OUTCFG_PUSHPULL;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sensors:83:23: error: 'AP3_SPI_IOM' was not declared in this scope
cipoPinCfg.uIOMnum = AP3_SPI_IOM;
^~~~~~~~~~~
Sensors:84:23: error: 'AM_HAL_GPIO_PIN_PULLUP_1_5K' was not declared in this scope
cipoPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_1_5K;
^~~~~~~~~~~~~~~~~~~~~~~~~~~
Sensors:85:29: error: 'retval' was not declared in this scope
padMode(MISO, cipoPinCfg, &retval);
^~~~~~
/home/ubuntu/catkin_ws/src/razor_imu_9dof/src/Razor_AHRS/Sensors.ino:85:29: note: suggested alternative: 'Serial'
padMode(MISO, cipoPinCfg, &retval);
^~~~~~
Serial
Sensors:85:2: error: 'padMode' was not declared in this scope
padMode(MISO, cipoPinCfg, &retval);
^~~~~~~
/home/ubuntu/catkin_ws/src/razor_imu_9dof/src/Razor_AHRS/Sensors.ino:85:2: note: suggested alternative: 'pinMode'
padMode(MISO, cipoPinCfg, &retval);
^~~~~~~
pinMode
Sensors:86:20: error: 'AP3_OK' was not declared in this scope
return (retval == AP3_OK);
^~~~~~
/home/ubuntu/catkin_ws/src/razor_imu_9dof/src/Razor_AHRS/Sensors.ino: In function 'bool beginIMU()':
Sensors:92:2: error: 'power_adc_disable' was not declared in this scope
power_adc_disable(); // Power down ADC. It it started by default before setup().
^~~~~~~~~~~~~~~~~
exit status 1
'ap3_err_t' was not declared in this scope

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

roslaunch razor_imu_9dof razor-pub.launch error

File "/home/ros-laser/catkin_ws/src/razor_imu_9dof/nodes/imu_node.py", line 230, in
yaw_deg = -float(words[0])
ValueError: could not convert string to float: #YPR=53.53

the python version I installed is Python 2.7.6, is the python version not proper?

Error when running roslaunch razor_imu_9dof razor-pub.launch | UPDATED Information

Good Day,

I have the Open_Log Artemis IMU DEV-16832, and followed the steps below:

  1. Update Firmware to V10.21 via GIU - Successful
  2. Checked to see the IUM functions (via Arduino, serial monitor, port 115200) - Successful
  3. download and build sudo apt-get install ros-melodic-razor-imu-9dof - Successful
  4. Tried to run roslaunch razor_imu_9dof razor-pub.launch - Failed with the error below

Error:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xbd in position 0: invalid start byte
[imu_node-2] process has died** ### RESOLVED -I changed the baudrate in imu_node.py line 140 from 57600 to 115200.

NEW ERROR: node launches but I get a.. BAD IMU data or bad sync warning

I wrote out the info being captured by IMU by uncommenting line 222 (f = open("raw_imu_data.log", 'w') and the write statement in line 234 of imu_node.py. and saw values. See attached

Please advise on how I can resolve.

Regards,
Che

protocol error,

I use arduino upload Razor_AHRS.ino
i met some error
can you help me?

Binary sketch size: 21,538 bytes (of a 30,720 byte maximum)
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x23
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x59

3D visualization node doesn't shut down cleanly on Control-C

Most probably it isn't checking rospy.is_shutdown() in the display loop.
Note: this trace reflects a change I made to the node name, from node, to imu_node. I'll submit a pull request for that & dynamic reconfigure shortly.

^C[display_3D_visualization_node-3] killing on exit
[imu_node-2] killing on exit
Traceback (most recent call last):
File "/mnt/Ubuntu12.04/home/bouchier/catkin_ws/src/razor_imu_9dof/nodes/imu_node.py", line 214, in
line = ser.readline()
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 446, in read
ready,, = select.select([self.fd],[],[], self._timeout)
select.error: (4, 'Interrupted system call')
[display_3D_visualization_node-3] escalating to SIGTERM
[display_3D_visualization_node-3] escalating to SIGKILL
[rosout-1] killing on exit
[master] killing on exit
Shutdown errors:

  • process[display_3D_visualization_node-3, pid 17493]: required SIGKILL. May still be running.
    shutting down processing monitor...
    ... shutting down processing monitor complete
    done

"IMU not found at port" when launching razor-pub-and-display.launch

My Razor SEN-14001 is showing up correctly as /dev/ttyACM0 when I plug it in. I've uploaded the Razor_AHRS firmware successfully, and I'm able to see the IMU chatter when I cat or screen on /dev/ttyACM0. But when I try to run "roslaunch razor_imu_9dof razor-pub-and-display.launch", I get this error: "[ERROR] [1525842655.072800]: IMU not found at port /dev/ttyACM0. Did you specify the correct port in the launch file?"

As far as I know, I've done everything correctly, and data is available on /dev/ttyACM0. The only thing that seems a little weird is that the owner of /dev/ttyACM0 is root/dialout. Maybe it's a permissions problem?

I'm running ROS kinetic on Ubuntu 16.04 LTS.

frame_id is hard coded

It would be very helpful and convenient if the frame_id for the imu messages was exposed as a parameter. If a user has more than one imu, they would want to give the messages different frame_ids.

Can not upload Razor_AHRS.ino

After the setup, when I tried to upload Razor_AHRS.ino I got the following error:

xec: "/bin/arm-none-eabi-g++": file does not exist
Error compiling for board SparkFun 9DoF Razor IMU M0.

How can I fix it?

Potential vulnerability: topic name from a ROS parameter

Hi,

We notice that you are using topic name from a ROS parameter at the following locations:


pub = rospy.Publisher(topic, Imu, queue_size=1)

For security reasons detailed below, we strongly suggest avoiding the usage of strings from parameters as topic names.

Although parameters are usually set in parameter files, they can also be changed by nodes. Specifically, other nodes in the same ROS application can also change the parameters listed above before it’s used, either by accident or intentionally (i.e., by potential attackers). If the razor_imu_9dof/topic parameter is changed, the razor_imu_9dof node will publish to a wrong topic, which breaks the dependency of downstream nodes. Depending on the functionality of the victim robot, the victim robot may have problem localizing and navigating. Moreover, if an attacker exists, she can control and inject malicious IMU data into the victim robot, by first fooling the razor_imu_9dof node to publish to a wrong topic like /imu_fake, and then forward all messages from /imu_fake to /imu after modifying the contents. The attacker may be able to control the movement of the robot, and navigate it to arbitrary destinations. Because ROS is an OSS (open-source software) community, third-party nodes are widely used in ROS applications, usually without complete vetting of their behavior, which gives the opportunity to potentially malicious actors to inject malicious code (e.g, by submitting hypocrite commits like in other OSS systems [1]) to infiltrate the ROS applications that use it (or software supply chain attacks, one of the primary means for real-world attackers today [2]).

We understand that using parameters to set topic names brings flexibility. Still, for the purpose of security, we strongly suggest that you avoid such vulnerable programming patterns if possible. For example, to avoid the exposure of this specific vulnerability, you may consider alternatives like remapping, which is designed for configuring names when launching the nodes.

[1] Q. Wu and K. Lu, “On the feasibility of stealthily introducing vulnerabilities in open-source software via hypocrite commits,” 2021, https://linuxreviews.org/images/d/d9/OpenSourceInsecurity.pdf.
[2] Supply chain attacks are the hacker’s new favourite weapon. and the threat is getting bigger. https://www.zdnet.com/article/supply-chain-attacks-are-the-hackers-new-favourite-weapon-and-the-threat-is-getting-bigger/.

Calibration did not work

When I tried to calibrate the IMU, processing complained that it can not find ejml jar file. I already put the jar files under libraries/EJML/library. I notice that instead of single ejml.jar, now there are multiple jar files, may be that is the problem?

Does this work with the new M0 Razor IMU?

Hey, the old razor imu is now a discontinued product and can't be found anywhere. It's been replaced with the new M0 Razor IMU. Does this repo work with it? Are there any plans to make it compatible with the new one?

Also, could I please request you to mention something like this in the readme, and perhaps put an image of the board in the readme? It'd help a lot!
Thanks!

How to improve the baud rate in ros system?

Hi Everyone:
When I change the baud rate to 115200 ( default is 57600 ) thought modifying "ser = serial.Serial(port=port, baudrate=57600, timeout=1)" to "ser = serial.Serial(port=port, baudrate=115200, timeout=1)" in imu_node.py, but there is no data from device, can you tell me how to change the baud rate correctly ? Thanks!

Fix queue_size warning

Should fix following warning

/home/kristof/catkin_ws/src/razor_imu_9dof/nodes/node.py:42: SyntaxWarning: The publisher should be created with an explicit keyword argument 'queue_size'. Please see http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers for more information.
  pub = rospy.Publisher('imu', Imu)

IMU Locking to a certain direction

Hi, I have a machine with ubuntu 16.04 with kinetic installed. I'm trying to use the 9dof razor imu, version Sen 14001 and I installed multiple times, flashed the IMU with different firmwares and progams, but I end up with the same problem, which is the IMU locking it's direction to the East, when I'm visualizing it in ROS. No matter where I turn it, it ends up going to the same direction.
However, checking the YPR in the Arduino serial, I checked and believe the value are correct.
With that said, I don't if there's a step I'm missing or if there is a problem with ROS obtaining the values.

Also by curiosity, I calibrated the imu a few times and the gyroscope always gives 0.00 or 0.01 when in the examples it has some quite different values, is it because of a special reason?
Thx.

Create ROS2 branch

I'm working on a ROS2 port, would be awesome if you could create a ROS2 branch for future PRs.

Thanks in advance!

calibrate_yaw.cfg should be renamed to imu.cfg

According to http://wiki.ros.org/dynamic_reconfigure/Tutorials/HowToWriteYourFirstCfgFile, https://github.com/KristofRobot/razor_imu_9dof/blob/indigo-devel/config/calibrate_yaw.cfg has an issue:

NOTE: The third parameter should be equal to the cfg file name, without extension. Otherwise the libraries will be generated in every build, forcing a recompilation of the nodes which use them. 

I.e. we should either rename the cfg file to imu.cfg - or change following:

exit(gen.generate(PACKAGE, "razor_imu_9dof", "calibrate_yaw"))

I also think we should move this file to a cfg directory, rather than config, which is meant for yaml configuration files?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.