The process has died issue occurs about 10 minutes after running rosbot_ekf

Hello,
After running rosbot_ekf for about 10 minutes, the robot stops and displays the message “process has died.”
image

The software installed on the robot is Ubuntu 18.04 + ROS Melodic + Docker + Husarnet client.
Additionally, I have modified part of the firmware to publish the PWM signals of each motor.
The code added to the firmware is as follows:

// other header
#include <std_msgs/Float32.h>

// other code
std_msgs::Float32 pwm_msg1;
std_msgs::Float32 pwm_msg2;
std_msgs::Float32 pwm_msg3;
std_msgs::Float32 pwm_msg4;

// The original codes...

ros::Publisher *pwm_pub1;
ros::Publisher *pwm_pub2;
ros::Publisher *pwm_pub3;
ros::Publisher *pwm_pub4;

// The original codes...

volatile bool pwm_publish_flag1 = true;
volatile bool pwm_publish_flag2 = true;
volatile bool pwm_publish_flag3 = true;
volatile bool pwm_publish_flag4 = true;

// The original codes...

static void initPwmPublisher1()
{
    pwm_pub1 = new ros::Publisher("pwm1", &pwm_msg1);
    nh.advertise(*pwm_pub1);
}

static void initPwmPublisher2()
{
    pwm_pub2 = new ros::Publisher("pwm2", &pwm_msg2);
    nh.advertise(*pwm_pub2);
}

static void initPwmPublisher3()
{

    pwm_pub3 = new ros::Publisher("pwm3", &pwm_msg3);
    nh.advertise(*pwm_pub3);
}

static void initPwmPublisher4()
{
    pwm_pub4 = new ros::Publisher("pwm4", &pwm_msg4);
    nh.advertise(*pwm_pub4);

// The original codes...

int main()
{
// The original codes...

    initPwmPublisher1();
    initPwmPublisher2();
    initPwmPublisher3();
    initPwmPublisher4();

// The original codes...

        if (pwm_publish_flag1)
        {   
            // Get duty cycle 
            pwm_msg1.data = 1-RosbotDrive::getInstance().getSpeed((RosbotMotNum)0, SpeedMode::DUTY_CYCLE);

            if (nh.connected())
            {
                pwm_pub1->publish(&pwm_msg1);
            }
        }

        if (pwm_publish_flag2)
        {   
            // Get duty cycle 
            pwm_msg2.data = 1-RosbotDrive::getInstance().getSpeed((RosbotMotNum)1, SpeedMode::DUTY_CYCLE);

            if (nh.connected())
            {
                pwm_pub2->publish(&pwm_msg2);
            }
        }

        if (pwm_publish_flag3)
        {   
            // Get duty cycle 
            pwm_msg3.data = 1-RosbotDrive::getInstance().getSpeed((RosbotMotNum)2, SpeedMode::DUTY_CYCLE);

            if (nh.connected())
            {
                pwm_pub3->publish(&pwm_msg3);
            }
        }

        if (pwm_publish_flag4)
        {   
            // Get duty cycle 
            pwm_msg4.data = 1-RosbotDrive::getInstance().getSpeed((RosbotMotNum)3, SpeedMode::DUTY_CYCLE);

            if (nh.connected())
            {
                pwm_pub4->publish(&pwm_msg4);
            }
        }

// The original codes...

The full code that was generated is available at the link below.

How can I solve this problem?
Thank you.

Hello @chokings
ROS melodic has been unsupported for over a year now. The easiest solution is to upgrade to a newer version, where the problem has probably been solved a long time ago.

Hello @RafalGorecki
The ROSbot 2.0 I am using is equipped with an Asus tinker board.
Which OS should I use to update on the installation page?
Raspberry Pi or UP Board?

Thank you.

I wasn’t sure what robot you were using, but in this case. We do not have direct support for ROSbots 2.0.

I am using ROSbot 2.0. Does that mean you might not be certain about the software I should install?

No, I mean that the version of the robot you are using is quite old and we no longer offer support for that version of the robot.
We are sorry about this, the only thing I can recommend is that you can build the code for ros noetic from the sources, perhaps this problem no longer occurs there, or restore the changes if any have been made.

1 Like