ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

ganesh's profile - activity

2017-07-01 05:10:44 -0500 received badge  Self-Learner (source)
2017-07-01 05:10:44 -0500 received badge  Teacher (source)
2017-07-01 05:09:21 -0500 received badge  Student (source)
2015-12-22 04:56:11 -0500 received badge  Famous Question (source)
2015-12-21 22:15:37 -0500 commented answer Ardunio IMU (mpu6050) interfacing with ROS

when I tried to remove all the serial print and tried to run this:"rosrun rosserial_python serial_node.py /dev/ttyUSB0" then it gave the above error

2015-12-21 22:12:43 -0500 commented answer Ardunio IMU (mpu6050) interfacing with ROS

[ERROR] [WallTime: 1450757476.810495] Unable to sync with device; possible link problem or link software version mismatch such as hydro rosserial_python with groovy Arduino

2015-12-21 22:02:55 -0500 commented answer Ardunio IMU (mpu6050) interfacing with ROS

I tried to putting it in the global scope .But it still does not show the output in the serial monitor. If I remove all the

ros::NodeHandle nh; and nh from the code it shows output in serial monitor but the ros does publich the data.

2015-12-21 22:02:27 -0500 answered a question Ardunio IMU (mpu6050) interfacing with ROS

I tried to putting it in the global scope .But it still does not show the output in the serial monitor. If I remove all the

ros::NodeHandle nh; and nh from the code it shows output in serial monitor but the ros does publich the data.

I also tried removing all serial prints it shows this error: [ERROR] [WallTime: 1450757476.810495] Unable to sync with device; possible link problem or link software version mismatch such as hydro rosserial_python with groovy Arduino

2015-12-21 17:16:19 -0500 received badge  Notable Question (source)
2015-12-21 07:23:22 -0500 received badge  Popular Question (source)
2015-12-20 16:24:16 -0500 asked a question Ardunio IMU (mpu6050) interfacing with ROS

I tried to interface IMU (mpu6050) which is controlled by Ardunio and it should send ROS messages (Publishing the coordinates) I tried the following code

#include <ros.h>
#include <std_msgs/Int8.h>
#include "I2Cdev.h"
#include "MPU6050_6Axis_MotionApps20.h"
#include "Wire.h"
std_msgs::Int8 ul_msg;
ros::Publisher pub_ul("temperature", &ul_msg);


MPU6050 mpu;
//MPU6050 mpu(0x69); // <-- use for AD0 high

#define LED_PIN 13 // (Arduino is 13, Teensy is 11, Teensy++ is 6)
bool blinkState = false;
// MPU control/status vars
bool dmpReady = false;  // set true if DMP init was successful
uint8_t mpuIntStatus;   // holds actual interrupt status byte from MPU
uint8_t devStatus;      // return status after each device operation (0 = success, !0 = error)
uint16_t packetSize;    // expected DMP packet size (default is 42 bytes)
uint16_t fifoCount;     // count of all bytes currently in FIFO
uint8_t fifoBuffer[64]; // FIFO storage buffer
// orientation/motion vars
Quaternion q;           // [w, x, y, z]         quaternion container
VectorInt16 aa;         // [x, y, z]            accel sensor measurements
VectorInt16 aaReal;     // [x, y, z]            gravity-free accel sensor measurements
VectorInt16 aaWorld;    // [x, y, z]            world-frame accel sensor measurements
VectorFloat gravity;    // [x, y, z]            gravity vector
float euler[3];         // [psi, theta, phi]    Euler angle container
float ypr[3];           // [yaw, pitch, roll]   yaw/pitch/roll container and gravity vector

// packet structure for InvenSense teapot demo
uint8_t teapotPacket[14] = { '$', 0x02, 0,0, 0,0, 0,0, 0,0, 0x00, 0x00, '\r', '\n' };
// ================================================================
// ===               INTERRUPT DETECTION ROUTINE                ===
// ================================================================

volatile bool mpuInterrupt = false;     // indicates whether MPU interrupt pin has gone high
void dmpDataReady() {
    mpuInterrupt = true;
}
// ================================================================
// ===                      INITIAL SETUP                       ===
// ================================================================

void setup() {


        Wire.begin();
       // TWBR = 24; // 400kHz I2C clock (200kHz if CPU is 8MHz). Comment this line if having compilation difficulties with TWBR.
        Serial.begin(57600);
        while (!Serial);
        Serial.println("Initializing I2C devices...");
        mpu.initialize();
        // verify connection
        Serial.println(F("Testing device connections..."));
        Serial.println(mpu.testConnection() ? F("MPU6050 connection successful") : F("MPU6050 connection failed"));
        // wait for ready
        Serial.println(F("\nSend any character to begin DMP programming and demo: "));
        while (Serial.available() && Serial.read()); // empty buffer
        while (!Serial.available());                 // wait for data
        while (Serial.available() && Serial.read()); // empty buffer again
        // load and configure the DMP
        Serial.println(F("Initializing DMP..."));
       devStatus = mpu.dmpInitialize();

    // supply your own gyro offsets here, scaled for min sensitivity
    mpu.setXGyroOffset(220);
    mpu.setYGyroOffset(76);
    mpu.setZGyroOffset(-85);
    mpu.setZAccelOffset(1788); // 1688 factory default for my test chip

    // make sure it worked (returns 0 if so)
    if (devStatus == 0) {
        // turn on the DMP, now that it's ready
        Serial.println(F("Enabling DMP..."));
        mpu.setDMPEnabled(true);

        // enable Arduino interrupt detection
        Serial.println(F("Enabling interrupt detection (Arduino external interrupt 0)..."));
        attachInterrupt(0, dmpDataReady, RISING);
        mpuIntStatus = mpu.getIntStatus();

        // set our DMP Ready flag so the main loop() function knows it's okay to use it
        Serial.println(F("DMP ready! Waiting for first interrupt..."));
        dmpReady = true;

        // get expected DMP packet size for later comparison
        packetSize = mpu.dmpGetFIFOPacketSize();
    } else {
        // ERROR!
        // 1 = initial memory load failed
        // 2 = DMP configuration updates failed
        // (if it's going to break, usually the code will be 1)
        Serial.print(F("DMP Initialization failed (code "));
        Serial.print(devStatus);
        Serial.println(F ...
(more)