Skip to content
Open
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
6d4b6cf
extend tb3 to read pins A0-A5
travis-mendoza Apr 16, 2025
dfee182
Initialize device_status to avoid segmentation fault in TB3 bringup
travis-mendoza May 15, 2025
3ab3444
Add device_ready flag
travis-mendoza May 20, 2025
2d66b03
Increase analog pin sampling time from 3 to 144 cycles (90 ns to 4 us)
travis-mendoza Jun 4, 2025
9dd59f8
Increase analog pin resolution to 12 bits
travis-mendoza Jun 4, 2025
ebcc321
Separate analog pins update rate from other control items update rate
travis-mendoza Jun 4, 2025
da54226
Leave comments to print analog readings over serial
travis-mendoza Jun 4, 2025
e174676
Write README, delete some unused folders, add basic analog read folder
travis-mendoza Jun 17, 2025
4301822
Take repo branch into account for fw upload and pointing to tb3 repo
travis-mendoza Jun 17, 2025
4432a82
Explain branches in README
travis-mendoza Jun 17, 2025
d1ab486
Correct name of master branch from main
travis-mendoza Jun 17, 2025
eef420e
Replace analog sensors with analog pins
travis-mendoza Jul 17, 2025
9186719
add AGENT.md
travis-mendoza Aug 21, 2025
2ac2cfc
Send debug messages to serial, instead of bluetooth
travis-mendoza Aug 21, 2025
c259b55
Rename AGENTS.md
travis-mendoza Aug 22, 2025
047eba9
Add simple ino file for reading temperature and humidity
travis-mendoza Aug 22, 2025
47b5148
Remove extraneous features from turtlebot3.cpp, esp joint control
travis-mendoza Aug 25, 2025
7559cf9
Specify which analog pins to read
travis-mendoza Aug 25, 2025
11c12ae
Read temp and humidity from DHT22
travis-mendoza Aug 29, 2025
30470cf
Add a python script to collect serial data in CSV format
travis-mendoza Sep 8, 2025
e15849b
Add script to plot CSV data and make data folder
travis-mendoza Sep 9, 2025
b28bfe6
Add color coding and standard deviation to plots
travis-mendoza Sep 11, 2025
d25b3bb
Include DHT library in OpenCR setup
travis-mendoza Sep 26, 2025
2a433c3
Beep once on startup and add new button melody
travis-mendoza Oct 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ static void update_motor_status(uint32_t interval_ms);
static void update_battery_status(uint32_t interval_ms);
static void update_analog_sensors(uint32_t interval_ms);
static void update_joint_status(uint32_t interval_ms);

static void update_analog_pins(uint32_t interval_ms);

DYNAMIXEL::USBSerialPortHandler port_dxl_slave(SERIAL_DXL_SLAVE);
DYNAMIXEL::Slave dxl_slave(port_dxl_slave, MODEL_NUM_DXL_SLAVE);
Expand Down Expand Up @@ -244,6 +244,13 @@ enum ControlTableItemAddr{
ADDR_GOAL_CURRENT_WR_GRIPPER = 343,
ADDR_GOAL_CURRENT_RD = 344,

ADDR_ANALOG_A0 = 350,
ADDR_ANALOG_A1 = 352,
ADDR_ANALOG_A2 = 354,
ADDR_ANALOG_A3 = 356,
ADDR_ANALOG_A4 = 358,
ADDR_ANALOG_A5 = 360,

};

typedef struct ControlItemVariables{
Expand Down Expand Up @@ -312,6 +319,8 @@ typedef struct ControlItemVariables{
bool joint_goal_current_wr_gripper;
bool joint_goal_current_rd;

uint16_t analog_pins[6]; // For A0-A5

}ControlItemVariables;

static ControlItemVariables control_items;
Expand Down Expand Up @@ -452,6 +461,14 @@ void TurtleBot3Core::begin(const char* model_name)
dxl_slave.addControlItem(ADDR_PROFILE_ACC_L, control_items.profile_acceleration[MortorLocation::LEFT]);
dxl_slave.addControlItem(ADDR_PROFILE_ACC_R, control_items.profile_acceleration[MortorLocation::RIGHT]);

// Items for Analog pins
dxl_slave.addControlItem(ADDR_ANALOG_A0, control_items.analog_pins[0]);
dxl_slave.addControlItem(ADDR_ANALOG_A1, control_items.analog_pins[1]);
dxl_slave.addControlItem(ADDR_ANALOG_A2, control_items.analog_pins[2]);
dxl_slave.addControlItem(ADDR_ANALOG_A3, control_items.analog_pins[3]);
dxl_slave.addControlItem(ADDR_ANALOG_A4, control_items.analog_pins[4]);
dxl_slave.addControlItem(ADDR_ANALOG_A5, control_items.analog_pins[5]);

if (p_tb3_model_info->has_manipulator == true) {
control_items.joint_goal_position_wr_joint = false;
control_items.joint_goal_position_wr_gripper = false;
Expand Down Expand Up @@ -562,9 +579,11 @@ void TurtleBot3Core::begin(const char* model_name)
sensors.initIMU();
sensors.calibrationGyro();

//To indicate that the initialization is complete.
sensors.makeMelody(1);
// To indicate that the initialization is complete.
sensors.makeMelody(3); // To indicate that we are running modified firmware

// Print a version message to Serial
DEBUG_PRINTLN("Running ANALOG-ENABLED firmware V20250410");
DEBUG_PRINTLN("Begin End...");
}

Expand Down Expand Up @@ -607,6 +626,7 @@ void TurtleBot3Core::run()
update_battery_status(INTERVAL_MS_TO_UPDATE_CONTROL_ITEM);
update_analog_sensors(INTERVAL_MS_TO_UPDATE_CONTROL_ITEM);
update_joint_status(INTERVAL_MS_TO_UPDATE_CONTROL_ITEM);
update_analog_pins(INTERVAL_MS_TO_UPDATE_CONTROL_ITEM);

// Packet processing with ROS2 Node.
dxl_slave.processPacket();
Expand Down Expand Up @@ -1056,4 +1076,24 @@ void test_motors_with_buttons(uint8_t buttons)
move[VelocityType::ANGULAR] = false;
}
}
}
}

/*******************************************************************************
* Function definition to update analog pin values
*******************************************************************************/
void update_analog_pins(uint32_t interval_ms)
{
static uint32_t pre_time = 0;

if(millis() - pre_time >= interval_ms){
pre_time = millis();

// Read all analog pins
control_items.analog_pins[0] = analogRead(A0);
control_items.analog_pins[1] = analogRead(A1);
control_items.analog_pins[2] = analogRead(A2);
control_items.analog_pins[3] = analogRead(A3);
control_items.analog_pins[4] = analogRead(A4);
control_items.analog_pins[5] = analogRead(A5);
}
}