Воспоминания Fischertechnik и Lego 19.12.2024
Всем привет!
Когда приехал в Германию узнал о роботе Fischertechnik. Но тогда когда я узнал о роботе, робот стоял бешеных каких-то денег. Нужно было покупать раздельно 4 вещи - аккумулятор, софт Robo Pro, конструктор, и главный модуль контроллер Fischertechnik TXT. Сейчас два - конструктор Fischertechnik и аккумулятор, а софт Robo Pro скачиваешь с сайте производителя. В колледже часть класса программировало на Lego Mindstorms NXT, а часть Fischertechnik Robotics TXT Discovery Set. Мне достался Lego Mindstorms NXT, я делал первый проект нужно проехать 5 полосок и остановится, а второй мой проект нужно сортировать цветные шарики.
Когда я учился в колледже пол класса такого программировала робота:
Мне купили по дешёвки такой набор, с устаревшим модулем, poдитeли знали что я не буду собирать робота. Допустим на 30 лет мне подарили Lego Mindstorms NXT 2.0, и он лежит в шкафу пылится. Я хотел с дeвyшкoй подружиться, т.к. она с ума сходит по программированию роботов. Тут в Германии девушки иногда любят мужскую профессию. Просто у меня всё теряется, и я вижу плохо т.к. на один глаз зрение 0.2, на другой 0.5. Допустим я потерял детали как-то лего, так и не нашёл. На НГ/рождество мне подарили такой конструктор-робот:
Кстати есть переходник из Fischertechnik на лего см.:
Моя ФЛ Он и ОнаВот что можно сделать из Lego целый завод:
А на Fischertechnik такое:
Моя ФЛ Он и ОнаКороче чтобы робот проехал 5 полосок и остановился код такой см. https://programming.mybb.ru/viewtopic.php?id=85:
#define MAX 4 // Максимально количество полосок
#define THRESHOLD 40 // Порог
task main()
{
int count = 0; // Количество полосок
SetSensorLight(IN_3); // Port 3, датчик освещения
OnFwd(OUT_AB, 75); // Запускаем моторо A и B со скоростью 75
while(1) {
until(Sensor(IN_3) > THRESHOLD); // Пока не привысет порог
count++; // Увеличиваем количество полосок
until(Sensor(IN_3) < THRESHOLD); // Пока не меньше порога
if(count >= MAX) break; // Если количество полосок больше или равно максимальному значению, то останавливаем цикл
}
PlayTone(1000, 1000); // Включаем писк
Wait(1000); // Ждём 1000 мсек.
PlayTone(0, 0); // Выключаем писк
Off(OUT_AB); // Останавливаем моторы A и B
}
Я его программировал bricxx:

Компилятор бесплатный https://bricxcc.sourceforge.net/, кстати я пытался ещё на Java программировать https://lejos.sourceforge.io/
А вот так работает в симуляторе, я симулятор настроил:


Моя ФЛ Он и ОнаМы в колледже программировали робота Lego спомощью американской программы RobotC.
Моя ФЛ Он и ОнаСейчас я кушаю швейцарский сыр, покушаю, продолжу.
Моя ФЛ Он и ОнаКороче продолжим дальше. Те, кто купил Visual Studio 2008 Standard/Professional, или скачал Visual Studio 2008 Express Edition, и успел скачать Microsoft Robitcs Studio 4.0, могли программировать роботов на C# или VB.NET, и VPL.
На Visual C# или VB.NET писали вот такую службу:

Вот код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using Microsoft.Ccr.Core;
using Microsoft.Dss.Core.Attributes;
using Microsoft.Dss.ServiceModel.Dssp;
using Microsoft.Dss.ServiceModel.DsspServiceBase;
using W3C.Soap;
using submgr =
Microsoft.Dss.Services.SubscriptionManager;
namespace DSSService1 {
[Contract(Contract.Identifier)]
[DisplayName("DSSService1")]
[Description("DSSService1 service (no description provided)")]
class DSSService1Service : DsspServiceBase {
/// <summary>
/// Service state
/// </summary>
[ServiceState]
DSSService1State _state = new DSSService1State();
/// <summary>
/// Main service port
/// </summary>
[ServicePort("/DSSService1", AllowMultipleInstances = true)]
_mainPort = new DSSService1Operations();
[SubscriptionManagerPartner]
submgr.SubscriptionManagerPort _submgrPort =
new submgr.SubscriptionManagerPort();
/// <summary>
/// Service constructor
/// </summary>
public DSSService1Service(DsspServiceCreationPort creationPort)
: base(creationPort) {
}
/// <summary>
/// Service start
/// </summary>
protected override void Start() {
//
// Add service specific initialization here
//
base.Start();
}
/// <summary>
/// Handles Subscribe messages
/// </summary>
/// <param name="subscribe">the subscribe request</param>
[ServiceHandler]
public void SubscribeHandler(Subscribe subscribe) {
SubscribeHelper(_submgrPort, subscribe.Body, subscribe.ResponsePort);
}
}
}И на VPL:


Моя ФЛ Он и ОнаMicrosoft больше не развивает Microsoft Robotics Studio. Я был счастливчиком и скачал эту программу. А управлялись Lego роботы спомощью Microsoft Robotics Studio вот так:
Моя ФЛ Он и Она