Giter Site home page Giter Site logo

tork-a / adi_driver Goto Github PK

View Code? Open in Web Editor NEW
42.0 42.0 43.0 6.28 MB

ROS package for ADI(Analog Devices Inc.)'s IMU sensors

Home Page: http://wiki.ros.org/adi_driver

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

CMake 5.49% C++ 74.84% Python 18.16% Shell 1.51%

adi_driver's People

Contributors

534o avatar 7675t avatar jonny214 avatar ktakao avatar moirai 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

adi_driver's Issues

User register memory map

read_register(0x04, gyro_low[0]);
read_register(0x06, gyro_low[0]);

Why is gyro_low referenced twice?

Looking in the User register memory map in 16470 datasheet
It looks like this:

X_GYRO_LOW 0x04
X_GYRO_OUT 0x06
Y_GYRO_LOW 0x08
Y_GYRO_OUT 0x0A
Z_GYRO_LOW 0x0C
Z_GYRO_OUT 0x0E
X_ACCL_LOW 0x10
X_ACCL_OUT 0x12
Y_ACCL_LOW 0x14       
Y_ACCL_OUT 0x16
Z_ACCL_LOW 0x18
Z_ACCL_OUT 0x1A

TEMP_OUT  0x1C               

Problems about adi_driver

Hi:
Thank you for sharing, very useful!
I have a ADIS16405 now.I would like to ask you if ADIS16405 can use this driver.
Thank you! Looking forward to your reply.

Stack Smashing Detected when running/launching the ADIS16470 node

Hello everyone

I am encountering the following problem:

I am trying to run the adi_driver with ADIS16470. I am using the exact same components advised on the GitHub page.
I did all the steps that work with all other drivers I installed.
I installed ROS Noetic 1.15.11 on a Raspberry Pi 4 8GB running Ubuntu Mate 20.04 LTS.
Cloned the driver into my catkin workspace using "git clone ".
I also installed the IMU_TOOLS Madgwick filter as suggested on the GitHub page, as another package in my catkin workspace.
Compiled everything with catkin_make.
Compilation and building is successful.

I try to launch the launch file and I incur into a Stack Smashing Detected ONLY for the IMU node. The filter works, but the ADIS16470 node exits with exit code -6. I could find no explanation of what this code means, and when I try to access the log file in the error description, it is completely empty.

Same happens if I try to run the node with rosrun.

Since nothing happens to work, not even deleting and reinstalling the package, I switch to another machine.

I tried with a virgin installation of ROS on another RPi 4 4GB running Ubuntu Mate 20.04 LTS and ROS Noetic 1.15.11.
I install the adi_driver as my first package and download the filter in the ROS package directory, not in my catkin workspace.
Finally it works and I can read the IMU data.

The problem shows itself again when on this new RPi I install another IMU driver package to run a comparison.
The moment I try to run the ADIS16470, the same exact Stack Smashing Detected error happens.

I do not understand why the driver would work 5 minutes earlier, and the moment I install another package to run multiple sensors at the same time it suddenly stops working.

If anyone has an insight on how to solve this problem, please reply.

Also, as a disclaimer, I am in no way an expert in programming or computer science.
I do understand what the C++ code is doing regarding the sensor, but I don't understand why it is giving me such an error if it is compiling correctly and if it was working fine literally 5 minutes ago.
As such, please assume I am at a beginner level in your answers.

Problem about the two numbers

Thanks for your excellent work. I want to use this driver on ADIS16465, I compared the Data Sheets of ADIS16465 and ADIS16470, I think I only need a little modification to use it on ADIS16465.

When I was reading the code, I got confused about the following lines:

gyro[i] = ((int32_t(gyro_out[i]) << 16) + int32_t(gyro_low[i])) * M_PI / 180.0 / 655360.0;

accl[i] = ((int32_t(accl_out[i]) << 16) + int32_t(accl_low[i])) * 9.8 / 52428800.0;

I don't know why the numbers 655360 and 52428800 need to be used here, what do they mean?

Cloud you please tell me why they used here?Thanks!!!!

16470 ros package

Hi, in my purpose of using ADIS16470 I need ROS Melodic package of it. My onboard computer is Jetson AGX Xavier with Auvidea's carrier board X221, In the adi_driver of ROS package, I did what github steps said. In the terminal when I run commands , I got the IMU datas are noisy, and in RVIZ ADS16470 is flickering, that means it has noisy data I guess. Here is my pics below:
Screenshot from 2022-08-03 13-56-14
Screenshot from 2022-08-03 13-56-07
Screenshot from 2022-08-03 13-54-02
To see the difference , I made change param burst_read in launch file to true. Bu I got error and IMU didn't start to run:
Screenshot from 2022-08-03 13-51-55

ADIS16470/PCB Calibration

Is there a way to edit the biases for both the gyroscope and accelerometer from the ROS package. I am trying to edit the calibrate my ADIS16470 on ROS. I know there is a pull request for bias estimation. I want to know if that lets you edit the actual bias. Does it store the change on the program or does it save to the sensor's flash memory? How long does the change stay effective? Can I edit the bias for the accelerometer?

Release to ROS melodic

I want to use this package with ROS Melodic and Ubuntu 18.04 on Jetson AGX Xavier .
Are there any plans to release it for ROS Melodic ?

Add topic to publish temperature

This is so useful ros package.

I tried, but there was no topic to publish temperature.
Looking at the specification of ADIS 16470, the register also includes temperature.
I think that it is more convenient as well as only use imu calibration.
Why don't you to add a topic to publish temperature?

ADIS 16470 for Linux using real-time kernel

Hi guys,

I am having some troubles when using your ROS package in Linux 4.14.12-rt10 (Real-time patched). I achieve to correctly launch the adis16470.launch program but few minutes after the IMU stop sending datas. I tested it in the same linux distribution but without Real-time patch and it works well... Any ideas? Thanks in advance for your help!

ADIS

Hi,Thanks for sharing, me I want to make some changes to fit ADIS16405, and I have a question about why this is 30,24 in your codes.
int size = write(fd_, buff, 24);
size = read(fd_, buff, 30);

No such file or directory: /opt/ros/kinetic/share/adi_driver/urdf/adis16470_breakout.urdf

Released package doesn't have urdf file. #5 will fix it.

tajima@carbon:~$ roslaunch adi_driver adis16470.launch with_rviz:=true
... logging to /home/tajima/.ros/log/153c3c08-062f-11e8-9b52-0028f8c8dc14/roslaunch-carbon-11577.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

No such file or directory: /opt/ros/kinetic/share/adi_driver/urdf/adis16470_breakout.urdf
XacroException('No such file or directory: /opt/ros/kinetic/share/adi_driver/urdf/adis16470_breakout.urdf',)
Invalid <param> tag: Cannot load command parameter [robot_description]: command [/opt/ros/kinetic/lib/xacro/xacro --inorder '/opt/ros/kinetic/share/adi_driver/urdf/adis16470_breakout.urdf'] returned with code [2]. 

Param xml is <param command="$(find xacro)/xacro --inorder '$(find adi_driver)/urdf/adis16470_breakout.urdf'" if="$(arg with_rviz)" name="robot_description"/>
The traceback for the exception was written to the log file

How to add support to ADSI16460?

I am considering to expend this great job to support adsi16460 imu sensor, but I am not sure what I should modify apart from include/adsi16460 ? Can anyone give me some advice? Thanks~

ADIS16495 driver error

Hello,

I'm trying to add ADIS16495-2 source code for using ADIS16495-2.
ADIS16495-2.cpp source code could work on the driver.
I add the new source code for ADI16495 and change name of header file, node file, CMakeLists and launch file.

I have error issue on catkin_make process.

Here is my branch repository.
https://github.com/jonny214/adi_driver/tree/adis16495

When I catkin_make it has some errors. The error message are here.


/xx/xx/catkin_ws/src/adi_driver/src/adis16495-2.cpp:253:57: error: no ‘int Adis16495::write_register(char, int16_t)’ member function declared in class ‘Adis16495’
/xx/xx/catkin_ws/src/adi_driver/src/adis16495-2.cpp:349:3: error: ‘temp’ was not declared in this scope


I have total 5 similar errors.
It looks name problem between ADIS16470 driver and ADIS16495 driver.

Please give me your advice?

Best regards,
Jun

update_burst

In update_burst function,

// X_GYRO_OUT
gyro[0] = big_endian_to_short(&buff[5]) * M_PI / 180 / 10.0;
// Y_GYRO_OUT
gyro[1] = big_endian_to_short(&buff[7]) * M_PI / 180 / 10.0;
// Z_GYRO_OUT
gyro[2] = big_endian_to_short(&buff[9]) * M_PI / 180 / 10.0;
// X_ACCL_OUT
accl[0] = big_endian_to_short(&buff[11]) * M_PI / 180 / 10.0;
// Y_ACCL_OUT
accl[1] = big_endian_to_short(&buff[13]) * M_PI / 180 / 10.0;
// Z_ACCL_OUT
accl[2] = big_endian_to_short(&buff[15]) * M_PI / 180 / 10.0;
// TEMP_OUT
temp = big_endian_to_short(&buff[16]) * 0.1;
return 0;

shouldn't the factor for *_ACCL_OUT be: ( 9.8 / 800 ) since data is in 16-bit format?

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.